package com.ruoyi.system.protocol;

import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysDictType;
import com.ruoyi.system.domain.SysClasses;
import com.ruoyi.system.domain.SysCommonDataProperty;
import com.ruoyi.system.domain.SysDataProperty;
import com.ruoyi.system.domain.SysDataType;

import java.util.HashMap;
import java.util.List;

public interface IDynamicCacheService {

    //获取公共字段缓存
    List<SysCommonDataProperty> getCommonDataPropertyListCache();
    //刷新公共字段缓存
    List<SysCommonDataProperty> refreshCommonDataPropertyListCache();

    //获取知识库字段缓存
    List<SysDataProperty> getDataPropertyListCache(String classesEn);
    //刷新知识库缓存
    List<SysDataProperty> refreshDataPropertyListCache(String classesEn);

    //根据数据库字段获取查询字段.正向   title->string_title
    String getFiledForward(String nameEn);
    //根据查询字段获取数据库字段.反向   string_title->title
    String getFiledReverse(String nameEn);
    //根据查询字段获取数据库字段.正反向   title->string_title、string_title->title
    String getFiledForwardOrReverse(String nameEn);
    //刷新正反项缓存
    void refreshFieldForwardAndReverse();

    //获取知识库缓存
    List<SysClasses> getClassesListByCache();
    //获取知识库缓存
    SysClasses findClassesByCache(Long id);
    //刷新知识库缓存
    List<SysClasses> refreshClassesListByCache();

    //获取字段类型缓存
    List<SysDataType> getDataTypeListByCache();
    //获取字段类型缓存
    SysDataType findDataTypeByCache(Long id);
    //刷新字段类型缓存
    List<SysDataType> refreshDataTypeListByCache();

    //获取数据字典类型缓存
    List<SysDictType> getDictTypeListByCache();
    //获取数据字典类型缓存
    SysDictType findDictTypeByCache(Long id);
    //刷新数据字典类型缓存
    List<SysDictType> refreshDictTypeListByCache();

    //获取数据字典值缓存
    List<SysDictData> getDictDataListByCache();
    //根据字典类型获取数据字典值缓存
    List<SysDictData> getDictDataListByCache(String dictType);
    //根据字典类型和字典键值获取数据字典值缓存
    List<SysDictData> getDictDataByCache(String dictType, String dictValue);
    //获取数据字典值缓存
    SysDictData findDictDataByCache(Long id);
    //刷新数据字典值缓存
    List<SysDictData> refreshDictDataListByCache();
}
